/*
 * ArenaTicketMain - Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * IBilheteDAO.java
 * ©2006
 */

package br.unicamp.ic.inf300.arena.persistencia.dao;

import java.util.Collection;

import br.unicamp.ic.inf300.arena.modelo.vendas.Bilhete;
import br.unicamp.ic.inf300.framework.persistencia.IDAOBase;

/**
 * @author inf312
 */
public interface IBilheteDAO extends IDAOBase {
	public static final String TABELA_BD = "ARENAVENDAS.Bilhete";

	public static final String COLUMN_CODIGO_PK = "numero";
	public static final String COLUMN_ESTADO = "estado";
	public static final String COLUMN_TIPO = "tipo";
	public static final String COLUMN_PONTUACAO = "pontuacao";		//TODO: modifica��o exerc�cio 10 - Fideliza��o
	public static final String COLUMN_DOCUMENTO = "documento";
	public static final String COLUMN_CODIGO_EVENTO = "codevento";
	public static final String COLUMN_NUMERO_PROTOCOLO = "numprotocolo";
	public static final String COLUMN_CODIGO_ASSENTO = "codassento";
	public static final String COLUMN_NUMERO_ESTORNO = "numeroEstorno";

	/**
	 *
	 * @param numero
	 *
	 * @return Bilhete
	 *
	 * @throws Exception
	 */
	public Bilhete obterBilhete(long numero) throws Exception;
	
	/**
	 * Obtem bilhetes de uma venda
	 * 
	 * @param numProtocolo
	 * 
	 * @return Collection<Bilhete>
	 * 
	 * @throws Exception
	 */
	public Collection<Bilhete> obterBilhetes(long numProtocolo) throws Exception;

	/**
	 * 
	 * @param bilhete
	 * 
	 * @return int
	 * 
	 * @throws Exception
	 */
	public int insert(Bilhete bilhete) throws Exception;
	
	//TODO: Implementacao Ativ. 11 - Devolu��o de Bilhetes
	/**
	 * 
	 */
	public boolean isEstornado(long numProtocolo) throws Exception;
}